home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 176-200 / 190 / nethack / een.zoo / monst.h < prev    next >
C/C++ Source or Header  |  1988-07-24  |  2KB  |  70 lines

  1. /*    SCCS Id: @(#)monst.h    2.3     88/02/11
  2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  3.  
  4. struct monst {
  5.     struct monst *nmon;
  6.     struct permonst *data;
  7.     unsigned m_id;
  8.     xchar mx,my;
  9.     xchar mdx,mdy;        /* if mdispl then pos where last displayed */
  10. #define MTSZ    4
  11.     coord mtrack[MTSZ];    /* monster track */
  12.     schar mhp,mhpmax;
  13.     char mappearance;    /* nonzero for undetected 'M's and for '1's */
  14.     Bitfield(mimic,1);      /* undetected mimic */
  15.     Bitfield(mdispl,1);     /* mdx,mdy valid */
  16.     Bitfield(minvis,1);     /* invisible */
  17.     Bitfield(cham,1);       /* shape-changer */
  18.     Bitfield(mhide,1);      /* hides beneath objects */
  19.     Bitfield(mundetected,1);        /* not seen in present hiding place */
  20.     Bitfield(mspeed,2);
  21.     Bitfield(mflee,1);      /* fleeing */
  22.     Bitfield(mfleetim,7);   /* timeout for mflee */
  23.     Bitfield(msleep,1);
  24.     Bitfield(mfroz,1);
  25.     Bitfield(mconf,1);
  26.     Bitfield(mcan,1);       /* has been cancelled */
  27.     Bitfield(mtame,1);      /* implies peaceful */
  28.     Bitfield(mpeaceful,1);  /* does not attack unprovoked */
  29.     Bitfield(isshk,1);      /* is shopkeeper */
  30.     Bitfield(isgd,1);       /* is guard */
  31.     Bitfield(mcansee,1);    /* cansee 1, temp.blinded 0, blind 0 */
  32.     Bitfield(mblinded,7);   /* cansee 0, temp.blinded n, blind 0 */
  33.     Bitfield(mtrapped,1);   /* trapped in a pit or bear trap */
  34.     Bitfield(mnamelth,6);   /* length of name (following mxlth) */
  35. #ifndef NOWORM
  36.     Bitfield(wormno,5);     /* at most 31 worms on any level */
  37. #endif
  38. #ifdef WALKIES
  39.     Bitfield(mleashed,1);   /* monster is on a leash */
  40. #endif
  41.     Bitfield(dragon,3);     /* multiple dragon type */
  42.     Bitfield(isdjinni,1);   /* is djinni */
  43.     Bitfield(isgremlin,1);  /* is gremlin */
  44. #ifdef STOOGES
  45.     Bitfield(isstooge,1);   /* is stooge */
  46. #endif
  47.     long mtrapseen;     /* bitmap of traps we've been trapped in */
  48.     long mlstmv;        /* prevent two moves at once */
  49.     struct obj *minvent;
  50.     long mgold;
  51.     unsigned mxlth;     /* length of following data */
  52.     /* in order to prevent alignment problems mextra should
  53.        be (or follow) a long int */
  54.     long mextra[1];     /* monster dependent info */
  55. };
  56.  
  57. #define newmonst(xl)    (struct monst *) alloc((unsigned)(xl) + sizeof(struct monst))
  58.  
  59. extern struct monst *fmon;
  60. extern struct monst *fallen_down;
  61. struct monst *m_at();
  62.  
  63. /* these are in mspeed */
  64. #define MSLOW 1 /* slow monster */
  65. #define MFAST 2 /* speeded monster */
  66.  
  67. #define NAME(mtmp)      (((char *) mtmp->mextra) + mtmp->mxlth)
  68. #define MREGEN        "TVi1"
  69. #define UNDEAD        "ZVW "
  70.